'''
爬虫作业：爬取京东，淘宝等网站上的信息、商品信息、
'''

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from time import sleep
from bs4 import BeautifulSoup as bs
from pymongo import MongoClient
from selenium.webdriver.common.keys import Keys

#https://search.jd.com/Search?keyword=%E5%8D%8E%E4%B8%BA%E6%89%8B%E6%9C%BA&qrst=1&ev=exbrand_%E5%8D%8E%E4%B8%BA%EF%BC%88HUAWEI%EF%BC%89%5E&pvid=6629ef00ea8b41c18017cf625a9b63ec&page=3&s=56&click=0

data_list=[]#存储爬取后的数据
url = 'https://www.jd.com/'
# 采用selenium虚拟登录
browser = webdriver.Chrome()    
#url = input('输入网址：')
browser.get(url)
#变量的声明
global page
page=0
global s           
s=1 
# 停顿
wait = WebDriverWait(browser, 10)

def main(keyword): 
    wait.until(EC.presence_of_element_located((By.ID, 'key'))).send_keys(keyword)  
    wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'button'))).click()             
    global page
    #输入想要获取到的页数，不超过最大页码数
    page=eval(input('输入页码:'))
    roll()
    
#页面下拉，并获取源代码    
def roll():
    js = "var q=document.documentElement.scrollTop=5000"  #滚动 0 表示页顶 10000表示页底
    browser.execute_script(js) 
    sleep(3)
    js2 = "var q=document.documentElement.scrollTop=10000"
    browser.execute_script(js2) 
    sleep(8)
    html= browser.page_source#获取源网页代码                              
    dowload(html)
    sleep(2)

#想要获取到多少页(进行判断)
def clik():
    global s
    global page        
    if s < page:
        s+=1
        print ("正在获取第%s页"%s)
        next_page()
#爬取数据
def dowload(html):
    soup=bs(html,'lxml')
    #根据class获取全部的li标签
    li=soup.find_all('li',class_='gl-item')
    #遍历得到各个li
    for item in li:
         # 商品编号
        no = item["data-sku"]
        # 商品名称
        name = item.find(class_="p-name p-name-type-2").find('em').get_text()
#         图片路径
        img_url = item.find(class_="p-img").find('a')('src')
#        if img_url =='done':
#            img_urll='https:'+item.find(class_="p-img").find('img')('src')
#            img_url=img_urll
#        else:        
#           img_url='https:'+img_url
        # 价格
        price = item.find(class_="p-price").find('i').get_text()
        #评论数
        comment=item.find(class_="p-commit").find('a').get_text()
#        browser.find_elements_by_class_name('ui-pager-next')[0].send_keys(Keys.ENTER) #点击评论的下一页
        # 商家
        shop = item.find(class_="p-shop").find('a').get_text()
        # 商品详情地址
        detail_addr = item.find(class_="p-name p-name-type-2").find('a')['href']
        data_dict={}
        data_dict['商品编号']=no
        data_dict['商品名称']=name
        data_dict['图片地址']=img_url
        data_dict['商品价格']=price
        data_dict['评论数']=comment
        data_dict['商家']=shop
        data_dict['商家地址']=detail_addr
        data_list.append(data_dict)
        print(data_list)
        print('页面总数为为:{}'.format(len(data_list)))           
    clik()
    #保存到数据库
def save_jd():
    client=MongoClient()
    #创建数据库
    database=client['jdshouji']
    #创建集合
    jd=database['jd']    
    jd.insert(data_list) 
#设置翻页动作，重复操作
def next_page():   
    # 翻页动作
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#J_bottomPage > span.p-num > a.pn-next > em'))).click()#翻页按钮
    sleep(2)
    roll()
main('眼影')


